package com.payment.system.service.impl;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.payment.common.base.AjaxResult;
import com.payment.common.support.Convert;
import com.payment.common.utils.StringUtils;
import com.payment.system.domain.AcqMerchant;
import com.payment.system.domain.Merchant;
import com.payment.system.mapper.AcqMerchantMapper;
import com.payment.system.service.IAcqMerchantService;

/**
 * 通道商户 服务层实现
 * 
 * @author payment
 * @date 2018-12-30
 */
@Service
public class AcqMerchantServiceImpl implements IAcqMerchantService 
{
	private static final Logger log = LoggerFactory.getLogger(AcqMerchantServiceImpl.class);
	@Autowired
	private AcqMerchantMapper acqMerchantMapper;

	/**
     * 查询通道商户信息
     * 
     * @param id 通道商户ID
     * @return 通道商户信息
     */
    @Override
	public AcqMerchant selectAcqMerchantById(String id)
	{
	    return acqMerchantMapper.selectAcqMerchantById(id);
	}
	
	/**
     * 查询通道商户列表
     * 
     * @param acqMerchant 通道商户信息
     * @return 通道商户集合
     */
	@Override
	public List<AcqMerchant> selectAcqMerchantList(AcqMerchant acqMerchant)
	{
	    return acqMerchantMapper.selectAcqMerchantList(acqMerchant);
	}
	
    /**
     * 新增通道商户
     * 
     * @param acqMerchant 通道商户信息
     * @return 结果
     */
	@Override
	public int insertAcqMerchant(AcqMerchant acqMerchant,String userUuid)
	{
		acqMerchant.setId(StringUtils.randomUUID());
		acqMerchant.setCreateUserId(userUuid);
	    return acqMerchantMapper.insertAcqMerchant(acqMerchant);
	}
	
	/**
     * 修改通道商户
     * 
     * @param acqMerchant 通道商户信息
     * @return 结果
     */
	@Override
	public int updateAcqMerchant(AcqMerchant acqMerchant,String userUuid)
	{
		acqMerchant.setCreateUserId(userUuid);
	    return acqMerchantMapper.updateAcqMerchant(acqMerchant);
	}

	/**
     * 删除通道商户对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	@Override
	public int deleteAcqMerchantByIds(String ids)
	{
		return acqMerchantMapper.deleteAcqMerchantByIds(Convert.toStrArray(ids));
	}

	@Override
	public AjaxResult changeEmployStatus(AcqMerchant acqMerchant) {
		if(acqMerchant==null){
			return AjaxResult.error("获取通道商户异常，请联系管理人员！");
		}

		acqMerchantMapper.updateAcqMerchant(acqMerchant);

		return AjaxResult.success();
	}

	@Override
	public List<AcqMerchant> selectAcqMerchantListByMerchantNo(String acqMerchantNo) {
		return acqMerchantMapper.selectAcqMerchantListByMerchantNo(acqMerchantNo);
	}
	/**
	 * 亿贤商户报备
	 */
	@Override
	public AjaxResult registerLLYMerchant(Merchant merchant) {
		// TODO Auto-generated method stub
		AjaxResult json=new AjaxResult();
		Map<String, String> params=new HashMap<String, String>(16);
		try {
			ResourceBundle bundle = ResourceBundle.getBundle("config");
			params.put("agentNo",bundle.getString("YX_AGENT_NO"));//机构号
			// map.put("BusinessLicenseNo", "112233"); // 营业执照号
			String qc = "****";
			params.put("MerchantCnName", qc);
			params.put("MerchantShortName", qc); // 商户简称 必填
			params.put("MerchantEnName", "");// 商户英文 必填
			params.put("ArtificialPerson", qc);// 法人代表

			String dz = "浙江台州"; // 地址 必填
			params.put("CompanyRegistrationAddress", dz);
			// 身份证号码 必填
			params.put("IdCardNumber", "*******");
			params.put("TaxRegistrationNo", "111");
			params.put("ArtificialPersonCardNumber", "*******");// 法人证件号
			params.put("LinkPhone", "*****");
			// 联系人
			params.put("LinkPerson", "****");
			// 开户行账户名称
			params.put("BankAccountName", "****");
			// 商户银行帐号 必填
			params.put("BankAccount", "*****");
			params.put("cityDivisionCode", "610126");// 商户所在区编号
			params.put("MCC", "5013");// 行业编码
			params.put("cnaps", "308100005027");// 开户支行银行行号：银联号
			params.put("wkRate", "0.65");// 线上费率
			params.put("ykRate", "0.85");// 线上费率
			params.put("wkFee", "1");// 线上费率
			params.put("ykFee", "1");// 线上费率
			String notif = "www.baidu.com";
			params.put("ICurl1", notif);
			params.put("ICurl2", notif);
			params.put("bankUrl1", notif);
			params.put("bankUrl2", notif);
			params.put("merchantICurl", notif);
			SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
			params.put("merchantNo", format.format(new Date()));// 商户号
		} catch (Exception e) {
			// TODO Auto-generated catch block
			log.error("亿贤商户报备="+e.toString());
			e.printStackTrace();

		}
		return json;
	}
	/**
	 * 畅捷商户报备
	 */
	@Override
	public AjaxResult registerCJMerchant(Merchant merchant) {
		// TODO Auto-generated method stub
		AjaxResult json=new AjaxResult();
		return json;
	}

	@Override
	public Map<String, String> getMerBindByMerId(String id, Integer type) {
		// TODO Auto-generated method stub
		return acqMerchantMapper.getMerBindByMerId(id, type);
	}

	@Override
	public Map<String, Object> getMerBindByUserId(String userId, int type) {
		// TODO Auto-generated method stub
		return acqMerchantMapper.getUserBindByMerId(userId, type);
	}

}
